package com.wang.service.impl;

import com.wang.dao.UserRepository;
import com.wang.entity.User;
import com.wang.service.MailService;
import com.wang.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * @Classname UserServiceImpl
 * @Description TODO
 * @Date 2024/5/29 11:28
 * @Created by pc
 */
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserRepository userRepository;
    @Autowired
    private MailService mailService;

    /*
    * 1.用户注册  生成激活码 此时保存用户的所有信息 包括激活码  当前用户还属于未激活状态 ---- 发送邮件让用户激活
    * 2.点击激活邮件之后 去数据库校验激活码是否正确  如果正确修改用户状态为激活状态 并清除激活码
    * 3、登录操作 登录的时候需要校验用户是否是已激活状态
    *
    * */
    @Override
    public void register(User user) {
        // 控制器收到用户注册信息之后 调用 uuid生成激活码 直接保存到数据库
        userRepository.save(user);
        String code = user.getCode();
        // 拿到code 发送邮件
        String subject = "激活邮件";
        //注意:此处的链接地址,是项目内部地址,如果我们没有正式的服务器地址,暂时无法从qq邮箱中跳转到我们自己项目的激活页面
        //String context = "<a href=\"http://localhost:8080/user/checkCode?code=\"" + code + ">激活请点击:" + code + "</a>";
        String context = "<a href='http://hjugua.natappfree.cc/user/checkCode?code=" + code + "'>激活请点击:" + code + "</a>";
        mailService.sendHtmlMail(user.getUserMail(),subject,context);
    }

    @Override
    public User checkCode(String code) {
        return userRepository.findUserByCode(code);
    }

    @Override
    public void updateUserStatus(User user) {
        userRepository.saveAndFlush(user);
    }

    @Override
    public User login(User user) {
        User u = userRepository.findByUsernameAndPassword(user.getUsername(), user.getPassword());
        if(null != u){
            return u;
        }
        return null;
    }
}
